﻿using System;
using System.Data;
using System.Text;
using System.Collections.Generic;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using System.Data.Common;

namespace Chenxin.Lib.Business.DAL
{
    /// <summary>
    /// 数据访问类AutoCode_BillControllerInfo。
    /// </summary>
    public class AutoCode_BillControllerInfo
    {
        public AutoCode_BillControllerInfo()
		{}
		#region  成员方法

		/// <summary>
		/// 增加一条数据
		/// </summary>
		public static void Add(Chenxin.Lib.Business.Entity.AutoCode_BillControllerInfo model)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("insert into AutoCode_BillControllerInfo(");
			strSql.Append("RecorId,PrefixCode,CodeYear,CodeFlag,MaxCode)");

			strSql.Append(" values (");
			strSql.Append("@RecorId,@PrefixCode,@CodeYear,@CodeFlag,@MaxCode)");
            Database db = DatabaseFactory.CreateDatabase("Chenxin_Business");
			DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());
			db.AddInParameter(dbCommand, "RecorId", DbType.Guid, model.RecorId);
			db.AddInParameter(dbCommand, "PrefixCode", DbType.AnsiString, model.PrefixCode);
			db.AddInParameter(dbCommand, "CodeYear", DbType.AnsiString, model.CodeYear);
			db.AddInParameter(dbCommand, "CodeFlag", DbType.AnsiString, model.CodeFlag);
			db.AddInParameter(dbCommand, "MaxCode", DbType.Int32, model.MaxCode);
			db.ExecuteNonQuery(dbCommand);
		}
		/// <summary>
		/// 更新一条数据
		/// </summary>
		public static void Update(Chenxin.Lib.Business.Entity.AutoCode_BillControllerInfo model)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("update AutoCode_BillControllerInfo set ");
			strSql.Append("PrefixCode=@PrefixCode,");
			strSql.Append("CodeYear=@CodeYear,");
			strSql.Append("CodeFlag=@CodeFlag,");
			strSql.Append("MaxCode=@MaxCode");
			strSql.Append(" where RecorId=@RecorId ");
            Database db = DatabaseFactory.CreateDatabase("Chenxin_Business");
			DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());
			db.AddInParameter(dbCommand, "RecorId", DbType.Guid, model.RecorId);
			db.AddInParameter(dbCommand, "PrefixCode", DbType.AnsiString, model.PrefixCode);
			db.AddInParameter(dbCommand, "CodeYear", DbType.AnsiString, model.CodeYear);
			db.AddInParameter(dbCommand, "CodeFlag", DbType.AnsiString, model.CodeFlag);
			db.AddInParameter(dbCommand, "MaxCode", DbType.Int32, model.MaxCode);
			db.ExecuteNonQuery(dbCommand);

		}

		/// <summary>
		/// 删除一条数据
		/// </summary>
		public static void Delete(Guid RecorId)
		{
			
			StringBuilder strSql=new StringBuilder();
			strSql.Append("delete from AutoCode_BillControllerInfo ");
			strSql.Append(" where RecorId=@RecorId ");
            Database db = DatabaseFactory.CreateDatabase("Chenxin_Business");
			DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());
			db.AddInParameter(dbCommand, "RecorId", DbType.Guid,RecorId);
			db.ExecuteNonQuery(dbCommand);

		}

		/// <summary>
		/// 得到一个对象实体
		/// </summary>
		public static Chenxin.Lib.Business.Entity.AutoCode_BillControllerInfo GetModel(Guid RecorId)
		{
			
			StringBuilder strSql=new StringBuilder();
			strSql.Append("select RecorId,PrefixCode,CodeYear,CodeFlag,MaxCode from AutoCode_BillControllerInfo ");
			strSql.Append(" where RecorId=@RecorId ");
            Database db = DatabaseFactory.CreateDatabase("Chenxin_Business_Search");
			DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());
			db.AddInParameter(dbCommand, "RecorId", DbType.Guid,RecorId);
			Chenxin.Lib.Business.Entity.AutoCode_BillControllerInfo model=null;
			using (IDataReader dataReader = db.ExecuteReader(dbCommand))
			{
				if(dataReader.Read())
				{
					model=ReaderBind(dataReader);
				}
                dataReader.Close();
                dataReader.Dispose();
			}
			return model;
		}

		/// <summary>
		/// 获得数据列表
		/// </summary>
		public static DataSet GetList(string strWhere)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("select RecorId,PrefixCode,CodeYear,CodeFlag,MaxCode ");
			strSql.Append(" FROM AutoCode_BillControllerInfo ");
			if(strWhere.Trim()!="")
			{
				strSql.Append(" where "+strWhere);
			}
            Database db = DatabaseFactory.CreateDatabase("Chenxin_Business_Search");
			return db.ExecuteDataSet(CommandType.Text, strSql.ToString());
		}

		/*
		/// <summary>
		/// 分页获取数据列表
		/// </summary>
		public DataSet GetList(int PageSize,int PageIndex,string strWhere)
		{
			Database db = DatabaseFactory.CreateDatabase();
			DbCommand dbCommand = db.GetStoredProcCommand("UP_GetRecordByPage");
			db.AddInParameter(dbCommand, "tblName", DbType.AnsiString, "AutoCode_BillControllerInfo");
			db.AddInParameter(dbCommand, "fldName", DbType.AnsiString, "ID");
			db.AddInParameter(dbCommand, "PageSize", DbType.Int32, PageSize);
			db.AddInParameter(dbCommand, "PageIndex", DbType.Int32, PageIndex);
			db.AddInParameter(dbCommand, "IsReCount", DbType.Boolean, 0);
			db.AddInParameter(dbCommand, "OrderType", DbType.Boolean, 0);
			db.AddInParameter(dbCommand, "strWhere", DbType.AnsiString, strWhere);
			return db.ExecuteDataSet(dbCommand);
		}*/

		/// <summary>
		/// 获得数据列表（比DataSet效率高，推荐使用）
		/// </summary>
		public List<Chenxin.Lib.Business.Entity.AutoCode_BillControllerInfo> GetListArray(string strWhere)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("select RecorId,PrefixCode,CodeYear,CodeFlag,MaxCode ");
			strSql.Append(" FROM AutoCode_BillControllerInfo ");
			if(strWhere.Trim()!="")
			{
				strSql.Append(" where "+strWhere);
			}
			List<Chenxin.Lib.Business.Entity.AutoCode_BillControllerInfo> list = new List<Chenxin.Lib.Business.Entity.AutoCode_BillControllerInfo>();
            Database db = DatabaseFactory.CreateDatabase("Chenxin_Business_Search");
			using (IDataReader dataReader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
			{
				while (dataReader.Read())
				{
					list.Add(ReaderBind(dataReader));
				}
                dataReader.Close();
                dataReader.Dispose();
			}
			return list;
		}


		/// <summary>
		/// 对象实体绑定数据
		/// </summary>
		public static Chenxin.Lib.Business.Entity.AutoCode_BillControllerInfo ReaderBind(IDataReader dataReader)
		{
            Chenxin.Lib.Business.Entity.AutoCode_BillControllerInfo model = new Chenxin.Lib.Business.Entity.AutoCode_BillControllerInfo();
			object ojb; 
			ojb = dataReader["RecorId"];
			if(ojb != null && ojb != DBNull.Value)
			{
				model.RecorId= new Guid(ojb.ToString());
			}
			model.PrefixCode=dataReader["PrefixCode"].ToString();
			model.CodeYear=dataReader["CodeYear"].ToString();
			model.CodeFlag=dataReader["CodeFlag"].ToString();
			ojb = dataReader["MaxCode"];
			if(ojb != null && ojb != DBNull.Value)
			{
				model.MaxCode=(int)ojb;
			}
			return model;
		}

        /// <summary>
        /// 获取编号（存储过程）
        /// </summary>
        public static string GetCodeByType(Guid companyid, string CodeFlag, string Year)
        {
            Database db = DatabaseFactory.CreateDatabase("Chenxin_Business");
            DbCommand dbCommand = db.GetStoredProcCommand("usp_AutoGenerateCode");

            db.AddInParameter(dbCommand, "CompanyId", DbType.Guid, companyid);
            db.AddInParameter(dbCommand, "CodeFlag", DbType.AnsiString, CodeFlag);
            db.AddInParameter(dbCommand, "CodeYear", DbType.AnsiString, Year);
            db.AddOutParameter(dbCommand, "Code", DbType.AnsiString, 150);
            db.ExecuteNonQuery(dbCommand);

            return db.GetParameterValue(dbCommand, "Code").ToString();
        }

		#endregion  成员方法
    }
}
